widget: Optimize resize propagation
authorMatthias Clasen <mclasen@redhat.com>
Sat, 4 May 2019 18:12:45 +0000 (18:12 +0000)
committerMatthias Clasen <mclasen@redhat.com>
Tue, 28 May 2019 20:25:15 +0000 (20:25 +0000)
When a GtkNative widget is marked as resize_needed,
we need a current position for its parent and we need
the parent to be allocated (so we can position our
surface), but we don't need the parent to be marked
as resize_needed, since the parent size is entirely
independent of the popup size.

gtk/gtkwidget.c

index aef6886ac218648938f0fb0a9a6ac19b7a16bbbc..f385967f44f4176b270e5d29f630431a51b32ae1 100644 (file)
@@ -4088,7 +4088,12 @@ gtk_widget_queue_resize_internal (GtkWidget *widget)
     {
       GtkWidget *parent = _gtk_widget_get_parent (widget);
       if (parent)
-        gtk_widget_queue_resize_internal (parent);
+        {
+          if (GTK_IS_NATIVE (widget))
+            gtk_widget_queue_allocate (parent);
+          else
+            gtk_widget_queue_resize_internal (parent);
+        }
     }
 }